﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Prisa.Entities;
using Prisa.DataAccess;
using Microsoft.Practices.Unity;

namespace Prisa.BussinesLogic
{
    public class PagoBL : IPagoBL
    {
        [Dependency]
        public IPagoDAO pagoDAO { get; set; }

        [Dependency]
        public ICreditoDAO creditoDAO { get; set; }

        [Dependency]
        public IClienteDAO clienteDAO { get; set; }

        public List<DETALLEPAGO> GetAllFromPagos()
        {
            return pagoDAO.GetAllFromPagos();
        }

        //public List<DETALLEPAGO> GetFromPagobyClienteOfCredito(string cliente)
        //{
        //    return pagoDAO.GetFromPagobyClienteOfCredito(cliente);
        //}
        
        public List<DETALLEPAGO> GetFromPagosbyCreditoId(int creditoId)
        {
            return pagoDAO.GetFromPagosbyCreditoId(creditoId);
        }

        //public List<DETALLEPAGO> GetFromPagobyFecha(DateTime? fec1, DateTime? fec2)
        //{
        //    return pagoDAO.GetFromPagobyFecha(fec1, fec2);
        //}

        public DETALLEPAGO GetFromPagoById(int id)
        {
            return pagoDAO.GetFromPagoById(id);
        }

        public void AddPago(DETALLEPAGO pago)
        {
            var msg = "";
            var ok = pago.Validate(out msg);

            if (ok)
            {
                //var credito = creditoDAO.GetFromCreditoById(pago.CreditoId);
                //var cliente = clienteDAO.GetFromClienteById(credito.ClienteId);
                //var actCredito = credito;
                //actCredito.CLIENTE = cliente;
                //actCredito.Total = credito.Total - pago.Monto;
                //creditoDAO.UpdateCredito(actCredito);
                pagoDAO.AddPago(pago);
            }
            else
            {
                throw new Exception(msg);
            }
        }

        public void UpdatePago(DETALLEPAGO pago)
        {
            var msg = "";
            var ok = pago.Validate(out msg);
            if (ok)
            {
                pagoDAO.UpdatePago(pago);
            }
            else
            {
                throw new Exception(msg);
            }
        }

        public void CancelarPago(int id)
        {
            pagoDAO.CancelarPago(id);
        }


        
    }
}
